import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class FileTool {

    // 静态常量，定义写入文件的路径
    public static final String WRITE_FILE_PATH = "data.txt"; // 你可以根据需要修改这个路径

    // 静态方法，写入文件（覆盖原有内容）
    public static void writeToFile(String... lines) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(WRITE_FILE_PATH, false))) { // 使用覆盖模式（false）
            for (String line : lines) {
                writer.write(line);
                writer.newLine(); // 在每行末尾添加换行符
            }
        } catch (IOException e) {
            e.printStackTrace();
            // 可以在这里添加日志记录或错误处理逻辑，例如使用日志框架记录错误
            // Log.error("Error writing to file", e); // 假设你有一个日志框架
        }
    }

    // 静态方法，读取文件
    public static List<String> readFromFile() {
        List<String> lines = new ArrayList<>();
        try (BufferedReader reader = new BufferedReader(new FileReader(WRITE_FILE_PATH))) {
            String line;
            while ((line = reader.readLine()) != null) {
                lines.add(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
            // 可以在这里添加日志记录或错误处理逻辑
        }
        return lines;
    }

    // 静态方法，写入特定格式信息到文件（例如：文件路径、范围起始、范围结束）
    // 注意：这里的filePath参数是多余的，因为我们已经有了WRITE_FILE_PATH静态常量
    // 但为了保持方法参数的灵活性，我还是保留了它（尽管在这个例子中它不会被使用）
    // 如果你确定不需要这个参数，可以将其从方法签名中移除，并直接使用WRITE_FILE_PATH
    public static void writeFileInfo(String fileInfo) {
        String[] lines = fileInfo.split("\n"); // 假设fileInfo是以换行符分隔的字符串
        writeToFile(lines);
        // 或者，如果你想要添加一些额外的格式或分隔符，并且不使用filePath参数：
        // String formattedInfo = "范围起始: " + from + "\n范围结束: " + to;
        // writeToFile(formattedInfo.split("\n"));
    }

    // 为了方便，还可以提供一个重载方法来直接写入起始和结束信息（不使用filePath参数）
    public static void writeFileInfo(String from, String to) {
        List<String> lines = new ArrayList<>();
        // 假设我们有一个固定的文件路径描述（在实际应用中可能不需要）
        // lines.add("文件路径: " + somePredefinedPath); // somePredefinedPath应该是你预先定义好的路径
        lines.add("范围起始: " + from);
        lines.add("范围结束: " + to);
        writeToFile(lines.toArray(new String[0]));
    }

    // 注意：由于我们有了WRITE_FILE_PATH常量，并且所有方法都是静态的，
    // 因此你不再需要传递文件路径作为参数（除非你打算写入不同的文件）。
    // 如果你确实需要写入不同的文件，可以添加一个额外的静态方法，该方法接受一个文件路径作为参数。

    //创建文件方法
    public static File createFile(String directoryPath, String fileName) {
        // 构造文件的完整路径
        File file = new File(directoryPath, fileName);

        // 获取文件的父目录（即指定的路径）
        File directory = file.getParentFile();

        // 如果父目录不存在，则创建它（包括所有必要的父目录）
        if (!directory.exists() && !directory.mkdirs()) {
            System.out.println("无法创建目录: " + directoryPath);
            return null;
        }

        // 尝试创建文件
        try {
            if (!file.createNewFile()) {
                System.out.println("文件已存在: " + file.getAbsolutePath());
            } else {
                System.out.println("文件创建成功: " + file.getAbsolutePath());
            }
        } catch (IOException e) {
            System.out.println("创建文件时发生错误: " + e.getMessage());
            return null;
        }

        // 返回文件的File对象
        return file;
    }

}